package com.common.dingding.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.common.dingding.entity.SchedulingRecord;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

/**
 * 排班记录Mapper
 */
@Mapper
public interface SchedulingRecordMapper extends BaseMapper<SchedulingRecord> {
    
    /**
     * 查询某天的排班记录
     * @param scheduleDate 排班日期
     * @param userIds 用户ID列表
     * @return 排班记录列表
     */
    List<SchedulingRecord> selectByDateAndUserIds(@Param("scheduleDate") LocalDate scheduleDate, @Param("userIds") List<String> userIds);
    
    /**
     * 查询某月每天的排班人数
     * @param year 年份
     * @param month 月份
     * @param userIds 用户ID列表
     * @return 每天的排班人数，key为日期，value为人数
     */
    List<Map<String, Object>> selectDailyCountByMonth(@Param("year") int year, @Param("month") int month, @Param("userIds") List<String> userIds);
    
    /**
     * 查询用户的下一次排班日期
     * @param userId 用户ID
     * @param currentDate 当前日期
     * @return 下一次排班日期
     */
    LocalDate selectNextScheduleDate(@Param("userId") String userId, @Param("currentDate") LocalDate currentDate);
    
    /**
     * 查询用户在某天是否排班
     * @param userId 用户ID
     * @param scheduleDate 排班日期
     * @return 排班记录数量
     */
    int selectCountByUserIdAndDate(@Param("userId") String userId, @Param("scheduleDate") LocalDate scheduleDate);
}